Script : 10_calcul_indicateurs_par_ope
Pour rappel, cette étude se divise en plusieurs parties. Dans un premier temps, il s’agit de produire un tableau de bord combinant divers indicateurs simples, à l’échelle de chaque opération de pêche.
Les pré-traitements nécessaires à la consitution de ce tableau de bord ont été réalisés dans les scripts précédents. Ce script permet donc de constituer les tableaux de bords comportants plusieurs indicateurs dits “simples”. Ces indicateurs (densités volumiques, de surface, pourcentages de juvéniles, longueurs médianes,…) seront calculés à l’échelle des opérations de pêches retenues pour l’étude. Ces indicateurs sont calculés par espèces et par stade (juvéniles / adultes), mais également pour l’ensemble des stades (indeterminés).
## Chargement des packages ----
library(tidyverse)
library(aspe)
# library(ggthemes)
# library(readxl)
Nous avons donc besoin des jeux de données constitués lors des précédents scripts.
## Chargement des données pré-enregistrées ----
load(file = "../processed_data/selection_pop_ope.rda")
load(file = "../processed_data/pre_traitements_donnees_env.rda")
load(file = "../processed_data/analyse_selection_especes.rda")
load(file = "../processed_data/pre_traitements_donnees_especes.rda")
#Chargement des tables ASPE ----
rdata_tables <- misc_nom_dernier_fichier(
repertoire = "../../../../projets/ASPE/raw_data/rdata",
pattern = "^tables")
load(rdata_tables)
mei_table <- misc_nom_dernier_fichier(
repertoire = "../../../../projets/ASPE/raw_data/rdata",
pattern = "^mei")
load(mei_table)
## Chargement des fonctions ----
source(file = "../R/calcul_biomasse.R")
source(file = "../R/calcul_50_percentile.R")
source(file = "../R/calcul_ecart_interquartile.R")
source(file = "../R/calcul_25_percentile.R")
source(file = "../R/calcul_75_percentile.R")
source(file = "../R/calcul_densite_surface.R")
Plusieurs indicateurs simples témoignants de la dynamique de populations des poissons d’eau douce sont calculés dans un premier temps à l’opération.
Les effectifs totaux de chacune des espèces sur chaque opération de pêches (ope_id) sont calculés à partir du jeu de données mei_ope_selection. Dans un premier temps, le calcul s’effectue sur l’ensemble des données (sans distinction de stades).
ope_effectif <- mei_ope_selection %>%
group_by(ope_id, esp_code_alternatif) %>%
distinct(mei_id, .keep_all = TRUE) %>%
summarise(valeur = n_distinct(mei_id)) %>% #Création de la valeur de l'effectif
mutate(indicateur = "effectif_total", stade = "ind") %>% # Création de la colonne indicateur : ici avec la mention "effectif_total"
select(ope_id,
esp_code_alternatif,
indicateur,
valeur,
stade)
Dans un second temps, l’indicateur est calculé par stade (juvéniles et adultes).
ope_effectif_stade <- mei_ope_selection %>%
group_by(ope_id,
esp_code_alternatif,
stade # Groupage des données par opérations, espèces et stades
) %>%
summarise(valeur=length(lop_effectif)) %>%
mutate(indicateur= "effectif_total") %>%
select(ope_id,
esp_code_alternatif,
indicateur,
valeur,
stade
)
L’ensemble des effectifs calculés (avec et sans sitinction des stades) sont regroupés dans un même jeu de données global : ope_effectif.
ope_effectif <- rbind (ope_effectif,
ope_effectif_stade) # On regroupe ope_effetif et ope_effectif_stade
Les biomasses de chacune des espèces sur chaque opération de pêches (ope_id) sont calculées à partir du jeu de données mei_ope_selection. Dans un premier temps, l’ensemble des stades sont gardés.
# Calcul de la biomasse par opération sans distinction de stades
ope_biomasse <- mei_ope_selection %>%
group_by(ope_id,
esp_code_alternatif,
stade) %>%
summarise(valeur=sum(poids_tp, na.rm = TRUE)) %>%
mutate(indicateur= "biomasse") %>%
select(ope_id,
esp_code_alternatif,
indicateur,
valeur,
stade)
Dans un second temps, l’indicateur de la biomasse est calculé par stade (juvéniles et adultes) et regroupé dans un tableau global : ope_biomasse.
ope_biomasse <- ope_biomasse %>%
bind_rows(ope_biomasse %>%
filter(stade %in% c("ad", "juv")) %>%
group_by(indicateur,
ope_id,
esp_code_alternatif) %>%
summarise(stade = "ind", valeur = sum(valeur)))
Les densités de surface de chacune des espèces sur chaque opération de pêches (ope_id) sont calculées à partir du jeu de données mei_ope_selection. Dans un premier temps, l’ensemble des stades sont gardés. Il est nécessaire d’ajouter les données de surfaces prospectées lors de l’opération de pêche afin de calculer les densités de surface : ainsi, nous ajoutons les valeurs d’ope_surface_calculee.
# Ajout des données de surfaces échantillonnées dans mei_ope_selection
mei_ope_selection <- mei_ope_selection %>%
left_join (y=operation %>%
select (ope_id,
ope_surface_calculee,
passage$pas_numero))
La fonction calcul_densite_surface a été créée afin de calculer les densités de surfaces par opérations / espèces et stades : les résultats de cette fonction sont renvoyés dans le jeu de données ope_densite_surf.
ope_densite_surf <- calcul_densite_surface(mei_ope_selection,
ope_surface_calculee,
ope_id,
esp_code_alternatif,
stade,
mei_id)
Les densités de volume de chacune des espèces sur chaque opération de pêches (ope_id) sont calculées à partir du jeu de données mei_ope_selection. Dans un premier temps, l’ensemble des stades sont gardés. Il est nécessaire d’ajouter les données de profondeur liée à l’opération de pêche afin de calculer les densités de volume : ainsi, nous ajoutons les valeurs du dataframe ope_selection_param_env issu du script 04_pre_traitement_env. Nous y selectionnons le paramètre de la profondeur et l’incluons dans notre jeu de données ope_param_profondeur.
#Ajout des données de profondeurs :
ope_param_profondeur <- ope_selection_param_env %>% # Création d'un df contenant les valeurs de profondeur
filter(parametre == "profondeur") %>%
select(ope_id,
valeur) %>%
rename(profondeur=valeur) %>%
distinct()
Nous réalisons par la suite le calcul des densités de volume par opérations pour chaque espèces ainsi que pour tous les stades (ad / juv et ind). Pour cela, nous utilisons également les valeurs de densités de surface précédemment calculées.
densite_surf <- ope_densite_surf %>% # Utilisation des données de densités de surface précédement calculées
rename(valeur_ds = valeur)
ope_densite_vol<- left_join(ope_param_profondeur, densite_surf, by = "ope_id") %>%
mutate(valeur = valeur_ds /profondeur) %>%
ungroup() %>%
mutate(indicateur = "densite_volumique") %>%
select(ope_id,
esp_code_alternatif,
indicateur,
valeur,
stade)
Les pourcentages de juvénils de chacune des espèces pour chaque opération de pêches (ope_id) sont calculées à partir du jeu de données mei_ope_selection. Nous utilisons les valeurs d’effectifs précèdemment calculées dans ope_effectif.
ope_pc_juv <- ope_effectif %>%
mutate(indicateur = "pourcentage_juveniles")
Le calcul de pourcentage de juvéniles par opérations est alors effectué. Les résultats sont stockés dans le jeu de données ope_pc_juv.
ope_pc_juv <- ope_pc_juv %>%
ungroup() %>%
complete(ope_id,
esp_code_alternatif,
stade,
indicateur,
fill = list(valeur = 0)) %>%
group_by(ope_id,
esp_code_alternatif) %>%
mutate(valeur = (valeur [stade == "juv"] / valeur [stade == "ind"])*100) %>%
filter(stade == "ind",
!is.nan(valeur))
Il s’agit ici de calculer des indicateurs simples spécifiques aux mesures individuelles des poissons. L’ensemble de ces paramètres tournerons autour de la longueur médiane des poissons. Il est donc nécessaire de garder à l’esprit que ces indicateurs reposeront sur des données de tailles estimées par un modèle (Script 04_pre_traitement_ope_esp). Il est donc nécessaire de rester critique face aux résultats issus de ces indicateurs.
Nous réalisons ainsi le calcul des longueurs médianes des individus par opération. La fonction calcul_50_percentile a été créée afin de calculer cet indicateur par opérations / espèces et stades : les résultats de cette fonction sont renvoyés dans le jeu de données ope_lm.
ope_lm <- calcul_50_percentile(mei_ope_selection,
mei_taille,
ope_id,
esp_code_alternatif,
stade)
Calcul des écarts interquartiles des tailles des individus par opération : Création de la fonction “calcul_ecart_interquartile” :
Le calcul des écarts interquartile des longueurs médianes des individus par opération est effectué. La fonction calcul_ecart_inter a été créée afin de calculer cet indicateur par opérations / espèces et stades : les résultats de cette fonction sont renvoyés dans le jeu de données ope_ecart_inter.
ope_ecart_inter <- calcul_ecart_inter(mei_ope_selection,
mei_taille,
ope_id,
esp_code_alternatif,
stade)
Le calcul des percentiles 25 et 75 des longueurs médianes des individus par opération est effectué. Les fonctions calcul_p25 et calcul_p75 ont été créés afin de calculer ces indicateurs par opérations / espèces et stades : les résultats de cette fonction sont renvoyés dans le jeu de données ope_p25 et ope_p75.
ope_p25 <- calcul_p25(mei_ope_selection, # Calcul des percentiles 25 des longueurs médianes
mei_taille,
ope_id,
esp_code_alternatif,
stade)
ope_p75 <- calcul_p75(mei_ope_selection, # Calcul des percentiles 75 des longueurs médianes
mei_taille,
ope_id,
esp_code_alternatif,
stade)
L’ensemble des indicateurs précèdemment calculés à l’opération sont regroupés dans le dataframe ope_indicateur.
# Création du tableau pré-final avec tous les indicateurs calculés
ope_indicateur <- rbind(ope_lm,
ope_densite_surf,
ope_densite_vol,
ope_pc_juv,
ope_biomasse,
ope_effectif)
Les années d’opérations ainsi que les identifiants des point de prélèvements sont ajoutés au tableau ope_indicateur.
# Ajout des années d'opération au site et à l'année (pop_id) et (ope_date)
ope_indicateur <- ope_indicateur %>%
ungroup() %>%
left_join(y=operation %>%
select(ope_id,
pop_id= ope_pop_id,
ope_date)) %>%
mef_ajouter_ope_date() %>%
select(ope_id,
esp_code_alternatif,
indicateur,
valeur,
stade,
pop_id,
annee)
Nous visualisons le dataframe final ope_indicateur regroupant donc l’ensemble des indicateurs calculés à l’opération (par espèces et par stades). Il s’agit de notre tableau de bord final à l’échelle des opérations.
#Représentation graphique du tableau
ope_indicateur%>%
DT::datatable(rownames = FALSE)
Nous sauvegardons dans un fichier .rda le jeu de données ope_indicateur qui nous servira pour des analyses ultérieures.
# SAUVEGARDE ----
save(ope_indicateur,
mei_ope_selection,
ope_effectif,
file = "../processed_data/assemblage_tab_par_ope.rda")